package Leetcode.lc054;

import java.util.ArrayList;
import java.util.List;

/**
 * 打印螺旋矩阵
 */
public class Sloution {
    public List<Integer> spiralOrder(int[][] matrix) {
        int row=matrix.length;
        int colum=matrix[0].length;
        int limit=row<colum?row:colum;
        int cricle=limit/2;
        int loop=0,startx=0,starty=0,offset=1;
        List<Integer> res = new ArrayList<>();
        while(loop<cricle){
            int i=startx;
            int j=starty;
           for(;j<colum-offset;j++){
               res.add(matrix[i][j]);
           }
           for(;i<row-offset;i++){
               res.add(matrix[i][j]);
           }
           for(;j>starty;j--){
               res.add(matrix[i][j]);
           }
           for(;i>startx;i--){
               res.add(matrix[i][j]);
           }
           starty++;
           startx++;
           offset++;
           loop++;
        }
        if(limit%2==1){
            if(row<=colum){
               for(int j=starty;j<=colum-offset;j++){
                   res.add(matrix[startx][j]);
               }
            }else{
                for(int i=startx;i<=row-offset;i++){
                    res.add(matrix[i][starty]);
                }
            }

        }
        return res;
    }

    public static void main(String[] args) {
        int[][] array = {
                {1,2,3,4},{5,6,7,8},{9,10,11,12}
        };
        Sloution sloution = new Sloution();
        List<Integer> list = sloution.spiralOrder(array);
        for(Integer i:list){
            System.out.println(i);
        }
    }
}
